"""
接口名称：登录接口
接口类型：token机制/ ----有些项目是cookies
用途：
    1- 本身需要做接口自动化测试
    2- 获取token，给后续的接口做鉴权
"""
from configs.config import HOST
import hashlib
import requests


# 封装一个对密码进行加密的函数md5
def get_md5(psw):
    """
    MD5加密方法
    :param psw: 输入登录密码
    :return: 返回MD5加密结果
    """
    # 实例化一个MD5对象
    md5 = hashlib.md5()
    # 调用加密方法直接加密
    md5.update(psw.encode('utf-8'))
    return md5.hexdigest()


# 封装一个登陆类
class Login(object):

    # 传入的参数login_data是一个字典：{'username': 'xxx', 'password': 'xxx'}
    def login(self, login_data, mode=True):
        # url路径
        url = f'{HOST}/api/loginS'

        login_data['password'] = get_md5(login_data['password'])  # 密码需要加密传入，需要封装一个加密函数

        # 参数
        payload = login_data
        # 请求
        """
        数据接收的格式
        data   ----- 一般是表单格式
        json   ----- json
        files  ----- 文件上传接口
        params ----- 以'?a=1&b=2'形式放在url路径里
        """
        resp = requests.post(url, json=payload)  # 这个接口是json格式

        # 获取token模式/获取登录信息模式
        if mode:
            return resp.json()['token']
        else:
            return resp.json()  # 返回字典类型


if __name__ == '__main__':  # 快捷键：ctrl+j
    res = Login().login({'username': '20154084', 'password': '123456'}, False)
    print(Login().get_md5('123456'))
    print(res)  # 控制台输出双引号 都是json，而非字典，字典为单引号
